home *** CD-ROM | disk | FTP | other *** search
/ SGI Freeware 1998 June / SGI Freeware 1998 June.iso / dist / fw_ATxgopher.idb / usr / freeware / src / xgopher.1.3 / Documents / Sunlib-rebuild.z / Sunlib-rebuild
Text File  |  1998-01-21  |  4KB  |  138 lines

  1. The following instructions are used by Sun system managers at the
  2. University of Illinois.  They are provided here as an aid to Sun
  3. users having trouble with Xgopher and name resolution.
  4.  
  5. Please refer to the Sun-names document for the background on why this
  6. information may be useful to you.
  7.  
  8. ***** Please understand that these instructions are provided without
  9.       warranty of any kind.  Nor can we offer any support for these
  10.       modifications.
  11. --------------------------------------------------------------------------
  12.  
  13. This short note describes how to rebuild the system library known as
  14. libc.so (the "c" library) to include the name resolver routines.
  15.  
  16. This assumes you have installed the Shlib_Custom software category on your 
  17. system. If there are no files in /usr/lib/shlib.etc, this has not been done.
  18. You will also potentially have to modify the Makefile in this directory. Since 
  19. I have forgotten what the original file looked like, I have included mine here.
  20.  
  21. ---Begin Makefile---
  22. #
  23. # @(#)Makefile 1.2 89/10/04 SMI
  24. #
  25. # Added lines to work under 4.1.2    SMM
  26.  
  27.  
  28. OBJSORT=objsort
  29. AWKFILE=awkfile
  30.  
  31.  
  32. libc.so:
  33.         ld -assert pure-text -ldl `${OBJSORT} lorder-sparc tmp`
  34.         /bin/ls /usr/lib/libc.so.* > TMP_FILE
  35.         mv a.out libc.so.`cat TMP_FILE | awk -f ${AWKFILE}`
  36.         echo libc.so.`cat TMP_FILE | awk -f ${AWKFILE}` built.
  37.  
  38. libcs5.so:
  39.         ld -assert pure-text -ldl `${OBJSORT} lorder-sparc tmp`
  40.         /bin/ls /usr/5lib/libc.so.* > TMP_FILE
  41.         mv a.out libc.so.`cat TMP_FILE | awk -f ${AWKFILE}`
  42.         echo libc.so.`cat TMP_FILE | awk -f ${AWKFILE}` built.
  43.  
  44. ---End Makefile---
  45.  
  46. It is strongly advised that you read through this before trying it so you 
  47. understand what it is you are about to do. 
  48.  
  49.  
  50.  1. Become super user
  51.         % su
  52.  
  53.  2. Go to the directory /usr/lib/shlib.etc
  54.     % cd /usr/lib/shlib.etc
  55.  
  56.  2. Make a temporary directory
  57.         % mkdir tmp
  58.  
  59.  3. Change to the "tmp" directory just made, extract the pic .o from 
  60.     libc_pic.a and rm the file __.SYMDEF. The reason you need to do 
  61.     the 3 "mv" commands is because "ar" truncated filenames over 
  62.     16 characters.
  63.         % cd tmp
  64.         % ar x ../libc_pic.a
  65.         % rm __.SYMDEF
  66.         % mv rpc_dtablesize. rpc_dtablesize.o
  67.         % mv rpc_commondata. rpc_commondata.o
  68.     % mv xccs.multibyte. xccs.multibyte.o
  69.  
  70.  4. Extract the contents of libc_pic.a and /usr/lib/libresolv.a into the
  71.     tmp directory:
  72.     % cd tmp
  73.     % ar x ../libc_pic.a
  74.     % ar x /usr/lib/libresolv.a
  75.  
  76.     The libresolv.a (apparently) contains object modules that are position
  77.     independant, so they can be added to the libc_pic modules without fear.
  78.  
  79.  5. Remove the old routine to do the hostname/addr resolution:
  80.     % rm gethostent.o
  81.  
  82.  6. Remove the libresolv module that contains `strncasecmp' (which is now
  83.     in the main C library, so it is redundant):
  84.     % rm strcasecmp.o
  85.  
  86.  7. Edit the file ../lorder-sparc to make these changes.
  87.     Remove the reference to `gethostent.o' and add the
  88.     references to the resolver library routines by applying this patch:
  89.  
  90.     % diff -rc2 lorder-sparc.orig lorder-sparc
  91.     *** lorder-sparc.orig   Thu Feb  8 05:27:46 1990
  92.     --- lorder-sparc    Mon Apr  9 12:58:59 1990
  93.     ***************
  94.     *** 150,154 ****
  95.       getwd.o
  96.       getnetgrent.o
  97.     ! gethostent.o
  98.       ypxdr.o
  99.       ttyname.o
  100.     --- 150,161 ----
  101.       getwd.o
  102.       getnetgrent.o
  103.     ! gethostnamadr.o
  104.     ! sethostent.o
  105.     ! res_query.o
  106.     ! res_mkquery.o
  107.     ! res_send.o
  108.     ! res_debug.o
  109.     ! res_comp.o
  110.     ! res_init.o
  111.       ypxdr.o
  112.       ttyname.o
  113.  
  114. 8.      % cd ..
  115.  
  116. 9.      % make libc.so
  117.  
  118. 10. Now you should have some libc.so.x.y.z built in the current directory,
  119.     where .x.y.z are some digits.
  120.  
  121.     It is recommended that you tested out this library at this point 
  122.     before installing it. You can do so by setting the environment
  123.     LD_LIBRARY_PATH  to the current directory and doing a trace command
  124.     of, for example, "date".  The output should inform you that the new
  125.     library is being used.  The commands are:
  126.         % setenv LD_LIBRARY_PATH `pwd`
  127.         % trace date
  128.     (You should see an "open( new_library_name)" here.  When I do this,
  129.     there are somewhere around 40 lines of output from this command, and
  130.     the open() to look for is about 1/3 of the way down.)
  131.  
  132.     Once you are satisfied that the new library worked, you can proceed
  133.     to install it with the following commands:
  134.         % cp libc.so.x.y.z /usr/lib         (replace x.y.z with your numbers)
  135.         % ldconfig
  136.         % unsetenv LD_LIBRARY_PATH
  137.  
  138.